]> dgit.raspbian.org Git - vtk9.git/commitdiff
Update changelog.
authorAnton Gladky <gladk@debian.org>
Mon, 27 Jul 2026 14:37:57 +0000 (16:37 +0200)
committerAnton Gladky <gladk@debian.org>
Mon, 27 Jul 2026 14:37:57 +0000 (16:37 +0200)
debian/changelog
debian/patches/fix_xmlwriter_ascii_implicit_cellarray_segfault.patch [new file with mode: 0644]
debian/patches/series
debian/tests/control
debian/tests/writeVTUAsciiImplicitCellTypes [new file with mode: 0755]

index bce6ba79904de05ceb0277c2121bdc61464359dd..c94fa9e37538e7942c63629001a1cf7c673aac38 100644 (file)
@@ -1,3 +1,13 @@
+vtk9 (9.6.2+dfsg1-3) unstable; urgency=medium
+
+  * Team upload.
+  * debian patch fix_xmlwriter_ascii_implicit_cellarray_segfault.patch
+    fixes segfault writing ascii .vtu files with implicit cell type
+    arrays, fixing yade FTBFS.
+  * add autopkgtest writeVTUAsciiImplicitCellTypes covering this bug.
+
+ -- Anton Gladky <gladk@debian.org>  Mon, 27 Jul 2026 16:37:42 +0200
+
 vtk9 (9.6.2+dfsg1-2) unstable; urgency=medium
 
   * Team upload
diff --git a/debian/patches/fix_xmlwriter_ascii_implicit_cellarray_segfault.patch b/debian/patches/fix_xmlwriter_ascii_implicit_cellarray_segfault.patch
new file mode 100644 (file)
index 0000000..7f303b4
--- /dev/null
@@ -0,0 +1,23 @@
+Description: Fix segfault writing ascii .vtu files with implicit cell type arrays
+ NewIterator() returns nullptr for the implicit cell-type arrays used
+ since VTK 9.6. WriteAsciiData() dereferenced that nullptr via an
+ unconditional iter->Delete(). Guard it. Closes yade FTBFS.
+Forwarded: not-yet
+Author: Anton Gladky <gladk@debian.org>
+
+Index: vtk9/IO/XML/vtkXMLWriter.cxx
+===================================================================
+--- vtk9.orig/IO/XML/vtkXMLWriter.cxx
++++ vtk9/IO/XML/vtkXMLWriter.cxx
+@@ -1978,7 +1978,10 @@ int vtkXMLWriter::WriteAsciiData(vtkAbs
+       ret = 0;
+       break;
+   }
+-  iter->Delete();
++  if (iter)
++  {
++    iter->Delete();
++  }
+   return ret;
+ }
+
index 4143c341395d7d867e62f69f68d6afff19d4e0d5..f342795bb47638add7b43c52ce564a4e3e40efc2 100644 (file)
@@ -13,3 +13,4 @@
 matplotlib_nullptr_s390x.patch
 gdal-3.13.patch
 build_reproducibility.patch
+fix_xmlwriter_ascii_implicit_cellarray_segfault.patch
index 94e924a992d1093f62f53b777db64a397b7a76f3..f4a31062ac3e67911e86c932a0d6c0b6bf7386a3 100644 (file)
@@ -1,3 +1,3 @@
-Tests: buildBoolean buildPoint buildVTU buildDistance buildPNG buildVTP
+Tests: buildBoolean buildPoint buildVTU buildDistance buildPNG buildVTP writeVTUAsciiImplicitCellTypes
 Depends: libvtk9-dev, libvtk9-qt-dev, build-essential, cmake
 Restrictions: allow-stderr
diff --git a/debian/tests/writeVTUAsciiImplicitCellTypes b/debian/tests/writeVTUAsciiImplicitCellTypes
new file mode 100755 (executable)
index 0000000..3070953
--- /dev/null
@@ -0,0 +1,73 @@
+#!/bin/sh
+# autopkgtest check
+# regression test for a vtkXMLWriter::WriteAsciiData() segfault:
+# ascii .vtu output of a vtkUnstructuredGrid whose cells all share one
+# type (implicit cell-type array, VTK >= 9.6) used to dereference a
+# nullptr vtkArrayIterator.
+
+set -e
+
+export OMPI_MCA_orte_rsh_agent=/bin/false
+
+WORKDIR=$(mktemp -d)
+trap "rm -rf $WORKDIR" 0 INT QUIT ABRT PIPE TERM
+cd $WORKDIR
+mkdir src
+cd src
+
+cat <<EOF > CMakeLists.txt
+cmake_minimum_required(VERSION 3.28)
+project(demo)
+find_package(VTK REQUIRED)
+
+add_executable(demo demo.cpp)
+target_link_libraries(demo \${VTK_LIBRARIES})
+install(TARGETS demo DESTINATION bin)
+EOF
+
+cat <<EOF > demo.cpp
+#include <vtkCellArray.h>
+#include <vtkNew.h>
+#include <vtkPoints.h>
+#include <vtkUnstructuredGrid.h>
+#include <vtkXMLUnstructuredGridWriter.h>
+
+int main()
+{
+  vtkNew<vtkPoints> points;
+  points->InsertNextPoint(0, 0, 0);
+  points->InsertNextPoint(1, 0, 0);
+  points->InsertNextPoint(2, 0, 0);
+
+  vtkNew<vtkCellArray> cells;
+  for (vtkIdType i = 0; i < 3; ++i)
+  {
+    cells->InsertNextCell(1, &i);
+  }
+
+  vtkNew<vtkUnstructuredGrid> grid;
+  grid->SetPoints(points);
+  // implicit (constant) cell-type array, since VTK 9.6
+  grid->SetCells(VTK_VERTEX, cells);
+
+  vtkNew<vtkXMLUnstructuredGridWriter> writer;
+  writer->SetInputData(grid);
+  writer->SetFileName("a.vtu");
+  writer->SetDataModeToAscii();
+  writer->Write();
+
+  return EXIT_SUCCESS;
+}
+EOF
+
+cd ..
+mkdir build
+cd build
+cmake -DCMAKE_INSTALL_PREFIX=./../inst ./../src
+make
+make install
+echo "build: OK"
+[ -x demo ]
+./demo
+cat a.vtu
+echo "run: OK"